#include "util/Pool.h"
#include "util/Vector.h"
#include "util/List.h"
#include "util/HashTable.h"

#include "base/Profiler.h"
#include "base/Watcher.h"
#include "base/StatsElector.h"

class Bucket;
NEW_DELETE_OPERATORS_TEMPLATE_CPP(Vector<Bucket*>,1);
class Counter;
NEW_DELETE_OPERATORS_TEMPLATE_CPP(Vector<Counter*>,1);
class StatisticsCollection;
NEW_DELETE_OPERATORS_TEMPLATE_CPP(Vector<StatisticsCollection*>,1);
class Entity;
NEW_DELETE_OPERATORS_TEMPLATE_CPP(List<Entity*>,10000);
class Request;
NEW_DELETE_OPERATORS_TEMPLATE_CPP(List<Request*>,100);
class Packet;
NEW_DELETE_OPERATORS_TEMPLATE_CPP(List<Packet*>,100);
class Processor;
NEW_DELETE_OPERATORS_TEMPLATE_CPP(List<Processor*>,10);
NEW_DELETE_OPERATORS_TEMPLATE_CPP(List<TimedRequest*>,100);
NEW_DELETE_OPERATORS_TEMPLATE_CPP(List<void*>,1);
NEW_DELETE_OPERATORS_TEMPLATE_CPP(List<unsigned long>,1);
class PacketDelay;
NEW_DELETE_OPERATORS_TEMPLATE_CPP(List<PacketDelay*>,100);
class LoadRequest;
NEW_DELETE_OPERATORS_TEMPLATE_CPP(List<LoadRequest*>,100);
class StoreRequest;
NEW_DELETE_OPERATORS_TEMPLATE_CPP(List<StoreRequest*>,100);
class Response;
NEW_DELETE_OPERATORS_TEMPLATE_CPP(List<Response*>,100);
class Access;
NEW_DELETE_OPERATORS_TEMPLATE_CPP(List<Access*>,1);
class SnoopResponse;
NEW_DELETE_OPERATORS_TEMPLATE_CPP(List<SnoopResponse*>,100);
class AddressLockInfo;
NEW_DELETE_OPERATORS_TEMPLATE_CPP(List<AddressLockInfo*>,1);

NEW_DELETE_OPERATORS_INLINE_CPP(Profiler,1);
NEW_DELETE_OPERATORS_INLINE_CPP(Watcher,1);
NEW_DELETE_OPERATORS_INLINE_CPP(StatsElector,1);
class DataRequest;
NEW_DELETE_OPERATORS_TEMPLATE_CPP(List<DataRequest*>,100);
NEW_DELETE_OPERATORS_TEMPLATE_CPP(List<unsigned int>,1);

NEW_DELETE_OPERATORS_TEMPLATE_CPP(__quote__(HashTable<unsigned long long, unsigned long long>),100);
NEW_DELETE_OPERATORS_TEMPLATE_CPP(__quote__(HashTable<unsigned long long, Access*>),1);
NEW_DELETE_OPERATORS_TEMPLATE_CPP(__quote__(HashTableNode<unsigned long long, unsigned long long>),1000000);
NEW_DELETE_OPERATORS_TEMPLATE_CPP(__quote__(HashTableNode<unsigned long long, Access*>),1000000);

